Storage systems typically present a plurality of physical media devices as one or more logical devices with desirable advantages over the original physical media. These advantages can be in the form of manageability (performing per device operations to a group of devices), redundancy (allowing and correcting media errors on one or more devices transparently), scalability (allowing the size of logical devices to change dynamically by adding more physical devices) or performance (using parallelism to spread storage operations over multiple media devices). Additionally, storage systems may employ intelligent operations such as caching, prefetch or other performance-enhancing techniques.
For comparative purposes, storage systems are described in terms of capacity and performance. Capacity is described in terms of bytes (basic unit of computer storage—conceptually equivalent to one letter on a typed page) or blocks where a block is typically 512 Bytes. The number of bytes in a storage system can be very large (several million millions of bytes—or terabytes). Performance of a storage device is typically dependent of the physical capabilities of the storage medium. This performance is typically considered in terms of three parameters: Input/Output Operations per Second (IOPs), throughput (bytes per second that can be accessed) and latency (time required to perform a nominal access). The IOPs metric is further described for both sequential and random access patterns.
Configuration of a storage system allows for selective optimization of capacity and performance. Capacity optimization is achieved by simply aggregating the capacity of all physical devices into a single logical device. This logical device will have higher capacity than the constituent devices but equivalent or slightly lower performance. Reliability optimization may involve using replication that sacrifices half the capacity. Alternatively, reliability optimization may involve some error correction encoding which sacrifices some capacity but less than that from replication. Performance optimization may involve duplication which allows twice as many read operations per unit time assuming some balancing mechanism, striping which increases throughput by spreading operations over an array of devices, or caching which uses memory to act as a buffer to the physical media. In general, the storage system will optimize for a desired performance metric at the cost of another or by incorporating additional physical elements (such as logic, memory or redundancy) beyond the component devices.
Determining the optimal, or most suitable, configuration of a storage system requires matching the demands of the user of the system to the capabilities of the physical devices and the optimization capabilities of the storage system. The performance of the constituent physical devices is typically the determining factor. As an example, common storage systems typically favor IOPs over capacity and thus choose to use a large number of smaller capacity disks vs. creating the equivalent aggregate capacity from larger capacity devices. As media technology evolves, new methods of increasing performance and compensating for shortcomings of the physical media are constantly sought.
A physical media may take the form of Solid State Storage technology known as Multi-Level Cell (MLC) NAND flash. The MLC NAND flash is commonly used in cameras, portable devices such as Universal Serial Bus (USB) memory sticks, and music players as well as consumer electronics such as cellular telephones. Other forms of flash in common use include Single-Level Cell (SLC) NAND flash and NOR flash. Both of these latter types offer higher performance at a significantly higher cost as compared to MLC NAND flash. Many manufacturers are currently offering NAND flash with an interface that mimics that of traditional rotating storage devices (disk drives). These flash devices are referred to as flash Solid State Drives (SSDs) and may be constructed using either MLC or SLC technology.
Flash SSD devices differ from traditional rotating disk drives in a number of aspects. Flash SSD devices have certain undesirable aspects. In particular, flash SSD devices suffer from poor random write perfoiniance that degrades over time. Because flash media has a limited number of writes (a physical limitation of the storage material that eventually causes the device to “wear out”), write performance is also unpredictable.
Internally, the flash SSD will periodically rebalance the written sections of the media in a process called “wear leveling”. This process assures that the storage material is used evenly thus extending the viable life of the device. The inability to anticipate, or definitively know, when and for how long such background operations may occur (lack of transparency) is a principal cause of the performance uncertainty.
For example, a user cannot typically access data in the flash SSD device while these rebalancing operations are being performed. The flash SSD device does not provide prior notification of when the background operations are going to occur. This prevents an application from anticipating the storage non-availability and scheduling other tasks during the flash SSD rebalancing operations. However, the significant performance advantage of flash SSDs over rotating media in random and sequential read operations makes SSDs ideal media for high performance storage systems, if the write performance issues can be overcome or avoided.
It has also been determined that although the random write performance of the SSDs for a common write operation size of 4 KB (4 thousand bytes or 8 blocks) was poor, the sequential write performance for large write operations above 1 MegaBytes (1 million bytes) was acceptable provided that all writes were of the same size. When always servicing writes of uniform size, the SSD can minimize the amount of background activity.